In a computing device, such as a server, router, computer, laptop, PDA, mobile phone, netbook, etc., and other devices having processor logic and memory, the computing device can have an operating system installed thereon, and may further include a number of application programs that execute on the computing device. However, after manufacture and/or assembly, the operating system and application programs first have to be loaded onto the computing device. A computing device with no functional operating system is referred to as a bare metal computing device. For example, a computing device configured as server hardware without a functional operating system is referred to as a bare metal server.
However, a bare metal computing device can have firmware, such as basic input/output system (BIOS) functions that functions to identify, test, and initialize system devices such as displays, drives, peripherals, and other hardware. The BIOS sets the machine hardware into a known state, so that software can be loaded and executed. Operating systems supersede the BIOS firmware functionality to provide replacement software interfaces to applications.
Computing systems can include multiple computing devices, which may be communicatively coupled over a communication network. The computing devices may, from time to time, be managed. For example, managing a computing device can include loading an operating system and/or application programs. The computing device may subsequently be further managed, such as to upgrade, replace, or troubleshoot the operating system and/or application programs; add, remove, or modify access rights; add/remove additional application programs; or examine and modify filesystems, execute commands, and/or perform other hardware, software, or operational manipulations.
Each computing device can be individually managed locally. However, an enterprise may have one or more computing systems, each comprising one or more computing devices. For example, an enterprise may have thousands of computing devices to manage, some portion of which may be communicatively coupled to a communication network, such as a local area network, wide area network, intranet, Internet, or other network. Managing large quantities of computing devices individually (e.g., locally) can be time consuming, expensive, and yield inconsistent results.
A server automation system may be used to manage a number of servers, including virtual servers, one at a time or as a group. A server automation system can include a server automation software core and a number of remote server automation remote software agents. Server automation systems can be used to manage servers using distributed scripts, manage software using policies, manage (e.g., install and uninstall) packages and patches, manage system and application configuration files, manage server compliance through automation and remediation features, and run reports, etc. The server automation software core may be in communication with the number of remote server automation remote software agents over a network.
One tool for managing multiple computing devices remotely and collectively is by an interactive command shell environment (e.g., a global shell). An interactive command shell can be an application loaded, and run, on top of an operating system installed in persistent memory. However, working with bare metal computing devices, which by definition do not yet having an operating system installed on persistent memory, presents a unique challenge. While bare metal computing devices can have an operating system and application programs locally loaded individually onto the persistent memory of a computing device, and thereafter can be managed remotely and collectively, an enterprise that is routinely provisioning large quantities of bare metal computing devices (e.g., a business replacing and/or adding new computing devices) faces with an expensive and time-consuming task in provisioning multiple bare metal computing devices.